パソコン活用研究ラピュタへの道(アセンブラ、DOS、Windows、旧型PCの活用研究)

FM-7/8のプログラムの抜き取り

-----------------------------------------------------------------------------------------
F-BASIC(Disc Basic)が立ち上がるようになったら、FM-7/8からプログラムを抜き取ってきて、エミュレーターの
ディスクイメージファイルへの書き込みをしましょう。これで、FM-7/8で動いていたプログラムをエミュレーターXM7
で動かすことができるようになります。

APOLLO氏のXM7お助けページにFTOOLSという便利ツールがありますが、それらを補うためのユーティリティを
いくつか作成しましたので、活用して下さい。(って、ここはXM7お助けページのお助けページですね)
-----------------------------------------------------------------------------------------

1 FM-7/8のプログラム抜き取りの準備

ここでは、RS232Cを使って抜き取る方法について記述します。

(1) Windows側の準備

(A) RS232Cシリアル通信プログラム
Windows側では、バイナリーファイルを受信できるRS232Cシリアル通信プログラムを用意して下さい。

A) 適当なフリーソフトを探す。->いろいろあると思います。一番おすすめ。
B) 自作してしまう。->偉い!。多少腕に覚えがあれば、これが早いかも。
C) 筆者の自作ソフト(serial020)を使う(VB4です)。−>ありがとうございます。
ここでは、当然C)の自作ソフトを使います。「
パソコン活用研究5番街/RS232C通信プログラム」を
参照して下さい。

(B) シリアルコネクタの結線
まず、FM-7/8とWindowsマシンのシリアルコネクタを結線します。専用のシリアルケーブルなどは
ないので、小型のワニ口クリップなどを利用して下さい。
結線はいたって簡単で、以下の通りです。
FM-7/8     WindowsDOS/V)
GND ----------GND
TXD(送信)-----RXD(受信)
RTS,CTSは自己結線

RS232Cによるシリアル通信にもう少し詳細の説明がありますので、参照して下さい。


(C) RS232Cシリアル通信プログラムの設定
 まず、受信側(Windows側)でRS232Cシリアル通信プログラムを起動して下さい。
筆者のserial020では以下のようにして下さい。
(ア) 通信条件の設定(これは自由ですが、今回の一例をあげます)
Baud Rate 600 (もっと早くてもいいですが、とりあえず600で)
Data Bits 8
Stop Bits 1
Parity 無し
Flow Control NON
Binary Mode チェック(ON)

(イ) あとは「Setting」ボタンをクリックしておしまいです。データの受信待ち状態で待機します。

(D) FM-7/8の準備

FM-8ではDIPスイッチ 2、6番ON にします。

BASICプログラムの場合は、いったん目的のプログラムをLoadしてから
LIST "COM0:S8N1"
として下さい。
プログラムがアスキーモードで転送されます。(ボーレート600、データ長8ビット、パリティ無し、ストップビット1)

機械語プログラムを転送したい場合は、FM-7/8で以下のプログラムを走らせて下さい。


20 I=0
100 CLS:WIDTH 80,25:CLEAR ,&H2FFF
110 INPUT "File Name :";FILE$
120 OPEN "I",#1,FILE$
125 OPEN "O",#2,"COM0:S8N1"
130 WHILE EOF(1)=0
140 D$=INPUT$(1,#1)
150 PRINT #2,D$;:I=I+1
160 LOCATE 1,1:PRINT I;"BYTE"
170 WEND
180 CLOSE
(プログラム1)

まず、送信したいファイル名を聞いてきますので、ファイル名を入力して下さい。
これで、FM-7/8はボーレート600、データ長8ビット、パリティ無し、ストップビット1で、データを送信します。
転送したバイト数を表示しますので、カウントアップがとまれば送信完了です。


2 ディスクイメージへの書き込み

(1) ファイルの保存
筆者のserial020の場合は、バイナリーモードで受信したら、ファイアル名をつけて、「バイナリー保存」
で保存して下さい。
拡張子は、XM7お手伝いページのユーティリティFTOOLSを使う都合上、Basicプログラム .bas  データファイル(F-Basicで作成) .txt  
機械語プログラム .bin にしておいて下さい。

(2) ディスクイメージへの書き込み
XM7ディスクイメージ(.d77)への書き込みは、XM7お手伝いページの作者APPOLO氏のFTOOLSというユーティリティを使います。
このユーティリティ群には、以下のような便利なツールがあります。詳細はXM7お手伝いページを参照して下さい。

なお、おじさんの使用しているXM7で作るブランクディスクでは、うまくFTOOLSが動作しませんでした。FTOOLSが動作するブランクディスク
を作成するプログラム(mkblank.exe)を作りましたのでお使い下さい。(このプログラムはAPPOLO氏よりいただいたブランクディスクを、独自
に解析して作成したものなので、不具合が生じるかもしれませんが、不具合に対する責任は負いかねます。何か動作に不具合があれば
お知らせください。)
mkblank.exeのダウンロード −>mkblank.lzh

makblank.exeの使い方
DOSプロンプト上で、作成したいディスクイメージファイル名を指定するだけです。
>mkblank file_name.d77


【FTOOLS概説】
FMREAD D77イメージファイルから指定のファイルを読み出す。
読み出したファイルはFM-FILEフォーマットとなる。

FMDECODE FM-FILEフォーマットのファイルをデコードしてDOS/V標準
ファイルに変換する(.TXT, .MOT, .BINなど)

FMENCODE DOS/V標準ファイルをFM-FILEフォーマットに変換する
DOS/Vファイルの拡張子により変換後のファイル属性が決定される

FMWRITE FM-FILEフォーマットファイルをD77イメージファイルに書き込む

FMDIR D77フォーマットファイルに格納されているファイルのカタログを
表示する

FMCOPY D77フォーマット間でファイルのコピーを行う

D77DMP D77ファーマットファイルのセクタダンプを表示する

これらのコマンドを使用することで次のようなことが行えます。

D77IMG → FM-FILE → DOS/V-FILE → FM-FILE → D77IMG
      ↑      ↑           ↑       ↑
   FMREAD  FMDECODE    FMENCODE   FMWRITE


D77IMG → D77IMG
      ↑
   FMCOPY


D77IMG → FM-FILE → インターネット → FM-FILE → D77IMG
      ↑       ↑          ↑       ↑
    FMREAD   MAILER     MAILER     FMWRITE

*FM-FILEはAPPOLO氏の独自ファイルです。

(A) BASICプログラムの書き込み
以下は、color.bas(BASICプログラム アスキーモード)をnosys_blank.d77というディスクイメージファイル
に書き込む流れです。

fmencode でまず、color.bas をcolor.0A0 というFM-FILEに変換し
fmwrite でnosys_blank.d77というディスクイメージファイルに書き込んでいます。
最後に、fmdir で確認しています。

C:\myprog\ftools_00>fmencode color.bas

C:\myprog\ftools_00>fmwrite nosys_blank.d77 color.0A0

C:\myprog\ftools_00>fmdir nosys_blank.d77
fm8anima 0 A 0 2
fm8color 0 A 0 4
fm8dig  0 A 0 2
animal  0 B 0 2
color   0 A 0 3

C:\myprog\ftools_00>


(B) 機械語ファイルの書き込み
fmencode でFM-FILE(機械語用−> 拡張子 .2B0)に変換するためには、motorola-S Formのソースファイルが必要です。
上記のプログラム1で、落としてきた機械語は、FM-7/8のロー(生 raw)データなので、fmencode用に使えません。
そこで、機械語ファイル(rawデータ)->FM-FILE(2B0)に変換するプログラム(binto2b0.exe)を作りましたので、これを使って
下さい。 使い方は以下の通りです。
>binto2b0 SourceFile OutputFile -e
OutputFileは、ファイル名8文字以内で、拡張子はつけないで下さい。自動的に、.2b0 という拡張子をつけます。
またオプションで -e をつけると、ファイルエンドに$1Aを付加します。FM-7/8の機械語プログラムファイル(ディスクにある時)
はファイルエンドに$1Aがついていますが、上記のプログラム1で落としてくると、ファイルエンドの$1Aが欠落しますので、
上記1のプログラムで落としてきたものを変換する時は、-e をつけて下さい。
(FM-FILEの形式は、おじさんが独自に解析した上で、binto2b0を作成しましたので、使用上不具合が発生するかも
しれませんが、不具合に対する責任は負いかねます。)
以降、fmwriteでディスクイメージファイルに書き込む手順はBASICプログラムの時と同じです。

これで、めでたくFM-7/8のプログラムをXM7上で動かせるようになります。めでたし、めでたし。
プロテクトのかかっている市販のゲームを使えるようにするには、さらに工夫が必要な場合があるかと思いますが。

3 FM-7/8機械語ファイルの形式
おまけに、機械語プログラムファイルの形式(ディスクにある状態)について、記載しておきます。
おじさんの独自の解析によるものなので、誤りがあるかもしれません。

00 01 02 03 04 05 06 07 08 ..... EOF-2 EOF-1 EOF
ファイルサイズ ロード番地 機械語プログラム 実行開始番地 $1A




TopPageへ